//
//  HttpRequest.h
//  SmartCity
//
//  Created by DEV on 15/3/9.
//  Copyright (c) 2015年 com.SmartCity. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AFNetWorkingWrapper.h"
//#import "ProtocolParserPack.h"


@interface HttpRequest : NSObject


/*!
 *  查询市民卡公交，中城账户余额
 *
 *  @param citizenCardNum 市民卡号
 *  @param userId         用户ID
 *  @param success        回调账户激活/绑定状态，公交账户余额，消费账户余额
 *  @param fail           回调错误提示
 */
+ (void)queryCardBalanceByCtCardNo:(NSString *)citizenCardNum UserId:(NSString *)userId block:(void(^)(NSString *citizenCardStatus, NSString *busBalance, NSString *cardBalance))success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  查询市民卡消费明细
 *
 *  @param citizenCardNum 市民卡号
 *  @param type           两种类型:联机，脱机。分别对应消费账户消费，公交账户消费
 *  @param pageStartIndex 当期页数
 *  @param currentTimes   当期时间
 *  @param success        回调消费记录数组
 *  @param fail           回调错误提示
 */
+ (void)getCardUsedInfoByCtCardNo:(NSString *)citizenCardNum Type:(NSString *)type PageStartIndex:(int)pageStartIndex CurrentTimes:(NSString *)currentTimes block:(void(^)(NSArray *cardTradeRecordList))success fail:(void(^)(NSString *errorMsg))fail;

/*!
 *  扫描二维码解析市民卡
 *
 *  @param QRCode  二维码编码
 *  @param success 回调成功结果
 *  @param fail    回调失败提示
 */
+ (void)analysisCitizenCardByQRCode:(NSString *)QRCode block:(void(^)(NSString *cardSerialNum, NSString *citizenCardNum, NSString *userName))success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  发送动态验证码到手机(包括用户注册、修改密码、联机账户激活)
 *
 *  @param mobile     目标手机号码
 *  @param type       类型:目前仅支持“mobile”
 *  @param templateId 短信模板ID, 16为注册时的短信校验，17为修改登录密码的短信，20为联机账户激活
 *  @param success    回调成功状态
 *  @param fail       回调错误提示
 */
+ (void)sendSmsCodeByMobileNum:(NSString *)mobile Type:(NSString *)type TemplateID:(NSString *)templateId block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  验证短信动态验证码
 *
 *  @param checkCode 验证码
 *  @param mobile    手机号码
 *  @param success   回调成功状态
 *  @param fail      回调错误提示
 */

+ (void)checkSmsCodeBySMSCode:(NSString *)checkCode Mobile:(NSString *)mobile block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  联机账户激活（查询市民卡卡号，真实姓名）
 *
 *  @param citizenCardNum 市民卡号码
 *  @param realName       真实新买
 *  @param userId         用户ID
 *  @param success        回调成功状态
 *  @param fail           回调错误提示
 */
+ (void)checkRealNameInfoByCtCardNo:(NSString *)citizenCardNum RealName:(NSString *)realName UserId:(NSString *)userId block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  联机账户激活(初始密码)
 *
 *  @param citizenCardNum 市民卡号
 *  @param userId         用户ID
 *  @param hardwareNum    硬件号
 *  @param sign           加密后的密文
 *  @param success        回调成功状态
 *  @param fail           回调失败提示
 */

+ (void)onlineAccountActivateByCtCardNo:(NSString *)citizenCardNum UserId:(NSString *)userId HardwareNum:(NSString *)hardwareNum Sign:(NSString *)sign block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  联机账户改密
 *
 *  @param citizenCardNum 市民卡号码
 *  @param userId         用户ID
 *  @param hardwareNum    硬件号
 *  @param sign           新+旧密码加密密文
 *  @param success        回调成功状态
 *  @param fail           回调失败提示
 */

+ (void)modifyOnlineAccountPSDByCtCardNo:(NSString *)citizenCardNum UserId:(NSString *)userId HardwareNum:(NSString *)hardwareNum Sign:(NSString *)sign block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  联机账户重置密码（验证卡号和身份证号)
 *
 *  @param citizenCardNum 市民卡号
 *  @param userId         用户ID
 *  @param idCardNum      身份证号
 *  @param success        回调成功状态
 *  @param fail           回调失败提示
 */

+ (void)checkCardNoAndIdCardByCtCardNo:(NSString *)citizenCardNum UserId:(NSString *)userId IDCardNum:(NSString *)idCardNum HardNum:(NSString *)hardNum block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;



/*!
 *  联机账户重置密码（输入新密码)
 *
 *  @param citizenCardNum 市民卡号
 *  @param idCardNum      身份证号
 *  @param hardwareNum    硬件号
 *  @param userId         用户ID
 *  @param sign           新密码密文
 *  @param success        回调成功状态
 *  @param fail           回调失败提示
 */

+ (void)resetPassWordByCtCardNo:(NSString *)citizenCardNum IDCardNum:(NSString *)idCardNum HardwareNum:(NSString *)hardwareNum UserId:(NSString *)userId Sign:(NSString *)sign block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  发送短信重置联机账户密码
 *
 *  @param citizenCardNum 绑定的市民卡号
 *  @param userId         用户ID
 *  @param mobileNum      绑定的手机号码
 *  @param success        返回成功回调状态
 *  @param fail           返回错误回调提示
 */

+ (void)sendCodeToUpdateCTZCardPwdByCtCardNo:(NSString *)citizenCardNum UserId:(NSString *)userId MobileNum:(NSString *)mobileNum block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;



/*!
 *  消费账户话费充值(输入支付密码) 
 *
 *  @param citizenCardNum 市民卡号
 *  @param userId         用户ID
 *  @param rechargeMobile 待充值手机号码
 *  @param userMobile     市民卡绑定的用户手机号码
 *  @param dealSum        实际扣款金额
 *  @param orderAmount    订单金额
 *  @param transacionCode 支付密码
 */

+ (void)cardConsumeCommitByCtCardNo:(NSString *)citizenCardNum UserId:(NSString *)userId RechargMobile:(NSString *)rechargeMobile UserMobile:(NSString *)userMobile DealSum:(NSString *)dealSum OrderAmount:(NSString *)orderAmount TransationCode:(NSString *)transacionCode HardwareNum:(NSString *)hardwareNum block:(void(^)(NSString *orderAmount))success fail:(void(^)(NSString *errorMsg))fail;

//中移动短信验证码发送（签约(独立的字典)，解约，支付）
+ (void)chinaMobileBankCardBind_Resign_Pay_MsgConfirmType:(NSString *)smsType Amount:(NSString *)amount UserId:(NSString *)userId MobileNo:(NSString *)mobileNo ContractId:(NSString *)contractId ContractDic:(NSDictionary *)contractDic block:(void(^)(NSString *tradeNo))success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  获得用户已经签约的银行卡列表
 *
 *  @param userId  用户ID
 *  @param success 银行卡列表
 *  @param fail    错误提示信息
 */
+ (void)getUserContractBankCardsByUserID:(NSString *)userId block:(void(^)(NSArray *contractBankCardList))success fail:(void(^)(NSString *errorMsg))fail;

/*!
 *  获取可签约银行列表
 *
 *  @param success 返回银行列表
 *  @param fail    返回错误信息
 */
+ (void)getBankList_block:(void(^)(NSArray *BankList))success fail:(void(^)(NSString *errorMsg))fail;

/*!
 *  获取验证码后开始签约银行卡
 *
 *  @param citizenCardNum 用户绑定的市民卡号
 *  @param idCardNum      用户身份证号
 *  @param userId         用户ID
 *  @param mobileNum      银行卡关联的手机号码
 *  @param bankAbbr       银行英文简称
 *  @param cardType       银行卡类型，0为信用卡，1为借记卡
 *  @param cardCVV2       信用卡CVV2码
 *  @param cardExpDate    信用卡有效期
 *  @param cardName       银行卡户主姓名
 *  @param idType         用户证件类型
 *  @param tradeNo        交易号
 *  @param smsCode        验证码
 *  @param bankName       银行中文全称
 *  @param success        回调签约成功状态
 *  @param fail           回调签约失败提示
 */
+ (void)signContractGuideByCtCardNo:(NSString *)citizenCardNum IDCardNum:(NSString *)idCardNum UserId:(NSString *)userId MobileNum:(NSString *)mobileNum BankAbbr:(NSString *)bankAbbr CardType:(NSString *)cardType CardCVV2:(NSString *)cardCVV2 CardExpDate:(NSString *)cardExpDate CardName:(NSString *)cardName IDType:(NSString *)idType TradeNo:(NSString *)tradeNo SmsCode:(NSString *)smsCode BankName:(NSString *)bankName block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;

/*!
 *  解约银行卡
 *
 *  @param userId     用户ID
 *  @param mobileNo   银行卡绑定的手机号码
 *  @param contractId 签约后绑定的唯一ID
 *  @param tradeNo    交易流水号
 *  @param smsCode    验证码
 *  @param success    回调解绑成功状态
 *  @param fail       回调签约失败提示
 */

+ (void)cancelContractGuideByUserID:(NSString *)userId MobileNo:(NSString *)mobileNo ContractID:(NSString *)contractId TradeNo:(NSString *)tradeNo SmsCode:(NSString *)smsCode block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  联机账户充值
 *
 *  @param productType    充值类型(联机账户充值)
 *  @param userId         用户ID
 *  @param mobileNo       市民卡绑定的手机号码
 *  @param contractId     协议号ID
 *  @param tradeAmount    交易金额
 *  @param citizenCardNum 市民卡号
 *  @param paymentWayType 支付类型
 *  @param tradeNo        交易流水号
 *  @param smsCode        短信验证码
 *  @param success        回调成功状态
 *  @param fail           回调错误提示
 */
+ (void)paymentDisplayGuideByProductType:(NSString *)productType UserID:(NSString *)userId MobileNo:(NSString *)mobileNo ContractID:(NSString *)contractId TradeAmount:(NSString *)tradeAmount CitizenCardNum:(NSString *)citizenCardNum PaymentWayType:(NSString *)paymentWayType TradeNo:(NSString *)tradeNo SmsCode:(NSString *)smsCode block:(void(^)(NSString *amount,NSString *tradeNo, NSString *contractList))success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  话费充值获取充值金额及优惠金额
 *
 *  @param mobileNum 手机号码
 *  @param success   回调话费数组结果
 *  @param fail      回调错误提示
 */
+ (void)findAllMobileRechargeByMobileNum:(NSString *)mobileNum block:(void(^)(NSArray *mobileRechargeObjectArray))success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  查询优惠劵使用情况+过期情况
 *
 *  @param userId  用户ID
 *  @param success 回调未使用，已使用，已过期优惠券数组
 *  @param fail    回调错误提示
 */
+ (void)findAllUserCouponsByUserID:(NSString *)userId  block:(void(^)(NSArray *unUsedList, NSArray *useList, NSArray *expireList))success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  查询用户订单列表
 *
 *  @param pageNum 页数
 *  @param success 回调订单数组
 *  @param fail    回调失败信息
 */
+ (void)findAllUserOrderByPageNum:(NSString *)pageNum block:(void(^)(NSArray *orderMsgList))success fail:(void(^)(NSString *errorMsg))fail;

/*!
 *  退出登录 --- 未加入
 *
 *  @param success 通知服务器退出成功回调
 *  @param fail    退出失败回调信息
 */
+ (void)loginOut_Block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  市民卡解绑:验证支付密码
 *
 *  @param password 支付密码(密文)
 *  @param success  回调成功状态
 *  @param fail     回调失败提示
 */
+ (void)checkPasswordByPassword:(NSString *)password Sign:(NSString *)sign block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  市民卡解绑 验证身份证号码后6位
 *
 *  @param idCardNum 身份证后六位
 *  @param success   回调市民卡激活状态
 *  @param fail      回调失败信息
 */
+ (void)checkIdCardNumberByIDCardNum:(NSString *)idCardNum block:(void(^)(NSString *citizenCardStatus))success fail:(void(^)(NSString *errorMsg))fail;


/*!
 *  市民卡获取验证码后解绑
 *
 *  @param idCardNum 身份证后六位
 *  @param payPsw    支付密码(密文)
 *  @param mobileNum 手机号码
 *  @param checkCode 短信验证码
 *  @param success   回调成功状态
 *  @param fail      回调失败信息
 */
+ (void)unbundlingCitizenCardByIdCardNum:(NSString *)idCardNum PayPsw:(NSString *)payPsw MobileNum:(NSString *)mobileNum Sign:(NSString *)sign CheckCode:(NSString *)checkCode block:(void(^)())success fail:(void(^)(NSString *errorMsg))fail;

/*!
 *  更新按钮、拓展按钮是否显示接口
 *
 *  @param success 更新按钮是否显示，扩展功能按钮是否显示
 *  @param fail    回调错误提示
 */
+ (void)getParamsBlock:(void(^)(BOOL updateButtonEnable,BOOL expandButtonEnable))success fail:(void(^)(NSString *errorMsg))fail;

/*!
 *  获取七牛传输Token
 *
 *  @param code     固定值code
 *  @param deviceID 设备硬件号
 *  @param success  回调成功时获取的token
 *  @param fail     回调错误信息
 */
+ (void)getQiNiuPicStorageToken:(NSString *)code DeviceID:(NSString *)deviceID Block:(void(^)(NSString *tokenNum))success fail:(void(^)(NSString *errorMsg))fail;

@end
